#define _CRT_SECURE_NO_WARNINGS 1
typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {
    ListNode* p = head;
    ListNode* q = head;
    while (q)
    {
        if (q->next == NULL)
            return p;
        else if (q->next->next == NULL)
        {
            return p->next;
        }
        else {
            p = p->next;
            q = q->next->next;
        }
    }
    return 0;
}